summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/auth/[...callback].ts
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-01-13 19:51:48 -0500
committerFrank <[email protected]>2026-01-13 19:51:48 -0500
commit6fe265e7d804a92d91a02ae93817ad50546cd656 (patch)
treeff59578d0b0df26047ea705c3c3e9384f785f19a /packages/console/app/src/routes/auth/[...callback].ts
parentf242541ef3eb2cfea59d9bd79d2977aec79e7666 (diff)
parent2aed4d263b4873c3085acdcbcf871a8dadaf392e (diff)
downloadopencode-6fe265e7d804a92d91a02ae93817ad50546cd656.tar.gz
opencode-6fe265e7d804a92d91a02ae93817ad50546cd656.zip
Merge branch 'zen-black' into dev
Diffstat (limited to 'packages/console/app/src/routes/auth/[...callback].ts')
-rw-r--r--packages/console/app/src/routes/auth/[...callback].ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/console/app/src/routes/auth/[...callback].ts b/packages/console/app/src/routes/auth/[...callback].ts
new file mode 100644
index 000000000..36a9c5194
--- /dev/null
+++ b/packages/console/app/src/routes/auth/[...callback].ts
@@ -0,0 +1,41 @@
+import { redirect } from "@solidjs/router"
+import type { APIEvent } from "@solidjs/start/server"
+import { AuthClient } from "~/context/auth"
+import { useAuthSession } from "~/context/auth"
+
+export async function GET(input: APIEvent) {
+ const url = new URL(input.request.url)
+
+ try {
+ const code = url.searchParams.get("code")
+ if (!code) throw new Error("No code found")
+ const result = await AuthClient.exchange(code, `${url.origin}${url.pathname}`)
+ if (result.err) throw new Error(result.err.message)
+ const decoded = AuthClient.decode(result.tokens.access, {} as any)
+ if (decoded.err) throw new Error(decoded.err.message)
+ const session = await useAuthSession()
+ const id = decoded.subject.properties.accountID
+ await session.update((value) => {
+ return {
+ ...value,
+ account: {
+ ...value.account,
+ [id]: {
+ id,
+ email: decoded.subject.properties.email,
+ },
+ },
+ current: id,
+ }
+ })
+ return redirect(url.pathname === "/auth/callback" ? "/auth" : url.pathname.replace("/auth/callback", ""))
+ } catch (e: any) {
+ return new Response(
+ JSON.stringify({
+ error: e.message,
+ cause: Object.fromEntries(url.searchParams.entries()),
+ }),
+ { status: 500 },
+ )
+ }
+}